import numpy as np

# 构建多维数组
arr = np.array([[1, 2, 3], [4, 5, 6]])

print(arr)
print(type(arr))

# 选取数据
print(arr[0])

# 修改数据
arr[0] = 0

print(arr)

# 切片
print(arr[::, 1])
print("=" * 100)

arr = np.array(
    [
        [1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]
    ]
)

# 切片
print(arr[1, 1])
print(arr[::, 2])
print(arr[::2, ::])

print(arr > 4)

# 布尔索引, 返回为true位置的数据
# 取出大于4的数据

print(arr[arr > 4])

# 对ndarray的计算相当于是对里面的数据的计算
print(arr % 2 == 1)

print(arr[arr % 2 == 1])

# 计算

arr = np.array(
    [
        [1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]
    ]
)

print(arr ** 2 - 1)

# 对位运算
arr1 = np.array([[1, 1, 1], [2, 2, 2]])
arr2 = np.array([[3, 3, 3], [4, 4, 4]])

# 对应位置进行计算
print(arr1 + arr2)
print(arr1 - arr2)
print(arr1 * arr2)
print(arr1 / arr2)
print(arr1 // arr2)
print(arr1 % arr2)
print(arr1 ** arr2)

arr1 = np.array([[1, 1, 1], [2, 2, 2]])

# 重构
print(arr1.reshape((6, 1)))

arr1 = np.array([[1, 1, 1], [2, 2, 2]])
arr2 = np.array([[3, 3, 3], [4, 4, 4]])

# 纵向拼接
print(np.vstack((arr1, arr2)))
# 横向拼接
print(np.hstack((arr1, arr2)))

print("=" * 100)
arr1 = np.array([[1, 2, 3], [4, 5, 6]])

print(arr1)
print(arr1.T)  # 转置
print(np.fliplr(arr1))  # 左右翻转
print(np.flipud(arr1))  # 上下翻转

arr1 = np.array([[1, 2, 3], [4, 5, 6]])
# 自然对数
print(np.log(arr1))

arr1 = np.array([1, 4, 6, 8, 0, 1])
# 差分
print(np.diff(arr1))

arr1 = np.array([[1, 2, 3], [4, 5, 6]])

# axis ： 方向，axis=0纵向，axis=1 横向
print(np.diff(arr1, axis=1))

arr1 = np.array([[1, 2, 3], [4, 5, 6]])

print(np.amax(arr1, axis=1))  # 最大值
print(np.std(arr1, axis=1))  # 标准差

# 水机生成正太分布的数据
print(np.random.normal(size=(10, 5)))

